<?php
namespace app\common\user;

use think\Validate;

class Uservalidate extends Validate
{
    // 定义验证规则
    protected $rule = [
        // 用户名规则：必须、长度 3 - 20 位、只能包含字母、数字和下划线
        'username' => 'require|length:3,20|alphaDash',
        // 密码规则：必须、长度 6 - 30 位
        'password' => 'require|length:6,30',
        // 确认密码规则：必须、和 password 字段的值相同
        'repassword' => 'require|confirm:password',
        // 邮箱规则：必须、符合邮箱格式
        'email' => 'require|email',
        // 手机号码规则：必须、符合手机号码格式
        'mobile' => 'require|regex:/^1[3-9]\d{9}$/',
    ];

    // 定义错误提示信息
    protected $message = [
        'username.require' => '用户名不能为空',
        'username.length' => '用户名长度必须在 3 - 20 位之间',
        'username.alphaDash' => '用户名只能包含字母、数字和下划线',
        'password.require' => '密码不能为空',
        'password.length' => '密码长度必须在 6 - 30 位之间',
        'repassword.require' => '确认密码不能为空',
        'repassword.confirm' => '两次输入的密码不一致',
        'email.require' => '邮箱不能为空',
        'email.email' => '请输入有效的邮箱地址',
        'mobile.require' => '手机号码不能为空',
        'mobile.regex' => '请输入有效的手机号码',
    ];

    // 定义验证场景
    protected $scene = [
        // 注册场景：验证用户名、密码、确认密码、邮箱、手机号码
        'register' => ['username', 'password', 'repassword', 'email', 'mobile'],
        // 登录场景：验证用户名、密码
        'login' => ['username', 'password'],
        // 修改密码场景：验证旧密码、新密码、确认新密码
        'changepwd' => ['oldpassword' => 'require', 'password', 'repassword'],
        // 修改邮箱场景：验证邮箱
        'changeemail' => ['email'],
        // 修改手机号码场景：验证手机号码
        'changemobile' => ['mobile'],
    ];
}